home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / Programming / Mesa / Examples / Test / test.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-02  |  2.3 KB  |  126 lines

  1.  
  2. /*
  3.  * test.c
  4.  *
  5.  * Version 1.0  28 Jun 1998
  6.  * by Jarno van der Linden
  7.  * jarno@kcbbs.gen.nz
  8.  *
  9.  * Test some Amiga GLUT functionality
  10.  * Based on cube.c redbook example
  11.  *
  12.  */
  13.  
  14. #include <gl/glut.h>
  15.  
  16. #include <stdlib.h>
  17. #include <stdio.h>
  18.  
  19.  
  20. void init(void)
  21. {
  22.     glClearColor (0.0, 0.0, 0.0, 0.0);
  23.     glShadeModel (GL_FLAT);
  24. }
  25.  
  26.  
  27. void display(void)
  28. {
  29.     printf("Displaying\n");
  30.     glClear (GL_COLOR_BUFFER_BIT);
  31.     glColor3f (1.0, 0.0, 0.0);
  32.     glLoadIdentity ();                /* clear the matrix */
  33.         /* viewing transformation  */
  34.     gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
  35.     glScalef (1.0, 2.0, 1.0);        /* modeling transformation */
  36.     glutWireCube (1.5);
  37.     glRotatef(30.0,0.0,1.0,0.0);
  38.     glColor3f (0.0, 1.0, 0.0);
  39.     glutWireCube (1.0);
  40.     glRotatef(30.0,1.0,0.0,0.0);
  41.     glColor3f (0.0, 0.0, 1.0);
  42.     glutWireCube (0.5);
  43.     glFlush ();
  44.     printf("Displayed\n");
  45. }
  46.  
  47.  
  48. void reshape (int w, int h)
  49. {
  50.     printf("Reshaping to %d %d\n",w,h);
  51.     glViewport (0, 0, (GLsizei) w, (GLsizei) h);
  52.     glMatrixMode (GL_PROJECTION);
  53.     glLoadIdentity ();
  54.     glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
  55.     glMatrixMode (GL_MODELVIEW);
  56.     printf("Reshaped\n");
  57. }
  58.  
  59.  
  60. void keyboard(unsigned char key, int x, int y)
  61. {
  62.     printf("Got keypress %d (%c) at (%d,%d)\n",key,key,x,y);
  63.     switch(key)
  64.     {
  65.         case 27:
  66.             exit(0);
  67.             break;
  68.     }
  69. }
  70.  
  71.  
  72. void menu(int value)
  73. {
  74.     printf("Got menu value %d\n",value);
  75.  
  76.     if(value == 999)
  77.         exit(0);
  78. }
  79.  
  80.  
  81. void setupmenus(void)
  82. {
  83.     int m1,m2,m3;
  84.  
  85.     m1 = glutCreateMenu(menu);
  86.     glutAddMenuEntry("Entry 1",1);
  87.     m2 = glutCreateMenu(menu);
  88.     glutAddMenuEntry("Sub Entry 1",11);
  89.     glutAddMenuEntry("Sub Entry 2",12);
  90.     glutAddMenuEntry("Sub Entry 3",13);
  91.     glutSetMenu(m1);
  92.     glutAddSubMenu("Sub Menu",m2);
  93.     glutAddMenuEntry("Entry 3",3);
  94.     m3 = glutCreateMenu(menu);
  95.     glutAddMenuEntry("Sub Sub Entry 1",111);
  96.     glutAddMenuEntry("Sub Sub Entry 2",112);
  97.     glutAddMenuEntry("Sub Sub Entry 3",113);
  98.     glutSetMenu(m2);
  99.     glutChangeToSubMenu(2,"Sub Sub Menu", m3);
  100.     glutSetMenu(m1);
  101.     glutAttachMenu(GLUT_RIGHT_BUTTON);
  102.  
  103.     glutCreateMenu(menu);
  104.     glutAddMenuEntry("Quit",999);
  105.     glutAttachMenu(GLUT_LEFT_BUTTON);
  106. }
  107.  
  108.  
  109. int main(int argc, char *argv[])
  110. {
  111.     glutInit(&argc, argv);
  112.     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  113.     glutInitWindowSize(200,200);
  114.     glutInitWindowPosition(100,100);
  115.     glutCreateWindow("Test");
  116.     init();
  117.     glutDisplayFunc(display);
  118.     glutReshapeFunc(reshape);
  119.     glutKeyboardFunc(keyboard);
  120.     setupmenus();
  121.  
  122.     glutMainLoop();
  123.  
  124.     return(EXIT_SUCCESS);
  125. }
  126.